sequence 分布式发号器使用
背景
全局生成唯一的 ID,适合定义业务流水编号例如
2019100500001
2019100500002
2019100500003
2019100600001
2019100600002
2019100600003
依赖
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-sequence</artifactId>
</dependency>
发号器配置
@Configuration
public class SequenceConfig {
/**
* 创建并配置Sequence对象的方法
*
* @param properties 用于构建Sequence的配置属性
* @return 构建完成的Sequence对象
*/
@Bean
public Sequence sequence(BaseSequenceProperties properties) {
return DbSeqBuilder
.create()
.bizName(DateUtil::today)// 定义切片规则,每天从 0 开始切片
.step(1000) // 每次获取数据的个数
.retryTimes(3) // 重试次数
.tableName(properties.getDb().getTableName())
.build();
}
}
使用
@Autowired
private Sequence sequence;
// 默认返回的格式是 yyyyMMdd00001 这种格式
sequence.nextNo()
自定义格式
💡默认格式
nextNo: 默认返回输出格式为 yyyyMMdd00001,如有特殊需求可以自行格式化
sequence.nextValue() 的输出结果为
1
2
3
4
5
//--- 按切片规则重置
1
2
则可以 String.format("%s%05d", "拼接前缀进行展示", sequence.nextValue());
配置属性
| 属性名称 | 默认值 | 描述 |
|---|
| pigx.xsequence.db.dbType | MYSQL | 默认数据库类型 |
| pigx.xsequence.db.tableName | pigx_sequence | 表名称 |
| pigx.xsequence.db.retryTimes | 1 | 重试次数 |